快慢指標:兩個指標一起指向頭,或是一起指向尾,一個指標可能是按著順序走訪,一個是根據問題的需求來移動,讓指標會有快慢之分,他們都會一起向右移動,也稱為同向指標,類似 Quick Sort 的 Lomuto
左右指標:兩個指標一個指向頭,一個指向尾,k 會向右移動,j 向左移動,兩個指標會逐漸靠近,也稱為反向指標,類似 Quick Sort 的 Hoare
快慢指標可以解決:
將已經排序過的資料,把重複的元素刪掉
判斷 linked list 是否有環,若是兩個指標相遇,代表有環
左右指標可以解決的題目類型:
反轉陣列,把 k 與 j 值交換
檢查 string 是否回文,檢查 k 位置的值 是否等於 j 位置的值
在已經排序過的資料中,題目會給一個 target ,找出資料中哪兩個數字相加為 target
Quick Sort 的 Hoare 方法就是使用左右指標的概念將數字進行排序
題目敘述:
測資的 Input/Output
題目如果給你 [1,1,2] 那你要把多餘的元素刪掉,刪完重複元素後的資料長度
題目的條件
題目敘述:
題目會給你一個從小排序到大的資料,跟希望找到的兩數相加的和 (target)
你需要找出哪兩個位置的值,相加會等於 target
哪兩個位置的值相加為 target,只會有一種答案
同一個元素不能加兩次
測資的 Input/Output
題目會給你一個遞增的數列,跟希望找到的目標總和 (target)
回傳一個 list 結構的資料,裡面要包含相加會等於 target 的 index
題目的條件
資料長度為 2~30000
每一筆資料介於 -1000~1000
資料由小排序到大
相加的目標 (target) 介於 -1000~1000
只會有唯一解